﻿/*
 * ITask.h
 *
 *  Created on: 2016年2月22日
 *      Author: Administrator
 */

#ifndef CORE_SOURCES_CORE_ITASK_H_
#define CORE_SOURCES_CORE_ITASK_H_

#include "def.h"
namespace eyas{
namespace core{
class Processor;
class CORE_API ITask {
public:
	ITask();
	virtual ~ITask();
private:
	uint32_t m_lMsgNo;
protected:
	friend class Processor;
	void setCommandNo(uint32_t lMsgNo){ this->m_lMsgNo = lMsgNo; }
	uint32_t getCommandNo(){ return this->m_lMsgNo; }

public:
	// 释放自身（可用于指令重利用）
	virtual void deleteMyself() = 0;
	// 执行
	virtual void execute() = 0;
	// 处理执行阻塞
	virtual void handleBlocked() = 0;
};
}
}
#endif /* CORE_SOURCES_CORE_ITASK_H_ */
